﻿using System.Collections.Generic;
using System.Linq;
using DTO;

namespace DAO
{
    public class TinRaoVatDaLuuDAO
    {
        public static List<TinRaoVatDaLuuDTO> getAll()
        {
            List<TinRaoVatDaLuuDTO> result = new List<TinRaoVatDaLuuDTO>();
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            var query = dbRaoVat.TINRAOVATDALUUs.Where(dm => dm.Deleted.Equals(0)).ToList();

            foreach (var ds in query)
            {
                TinRaoVatDaLuuDTO dto = new TinRaoVatDaLuuDTO();

                dto.MaTinRaoVatDaLuu = ds.MaTinRaoVatDaLuu;
                dto.MaNguoiDung = ds.MaNguoiDung.Value;
                dto.MaTinRaoVat = ds.MaTinRaoVat.Value;
                dto.ThoiGianLuu = ds.ThoiGianLuu.Value;
                
                result.Add(dto);
            }

            return result;
        }

        public static TinRaoVatDaLuuDTO getAlongCode(int maTin)
        {
            TinRaoVatDaLuuDTO result = new TinRaoVatDaLuuDTO();
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            var query = dbRaoVat.TINRAOVATDALUUs.Where(dm => dm.Deleted.Equals(0) &&
                dm.MaTinRaoVatDaLuu == maTin).Single();

            result.MaTinRaoVatDaLuu = query.MaTinRaoVatDaLuu;
            result.MaNguoiDung = query.MaNguoiDung.Value;
            result.MaTinRaoVat = query.MaTinRaoVat.Value;
            result.ThoiGianLuu = query.ThoiGianLuu.Value;

            return result;
        }

        public static void Insert(TinRaoVatDaLuuDTO _insert)
        {
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            TINRAOVATDALUU tindaluu = new TINRAOVATDALUU();            
            tindaluu.MaNguoiDung = _insert.MaNguoiDung;
            tindaluu.MaTinRaoVat = _insert.MaTinRaoVat;
            tindaluu.ThoiGianLuu = _insert.ThoiGianLuu;
            tindaluu.Deleted = _insert.Deleted;

            dbRaoVat.TINRAOVATDALUUs.InsertOnSubmit(tindaluu);
            dbRaoVat.SubmitChanges();
        }

        public static void Delete(int maTin)
        {
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            TINRAOVATDALUU _delete = (from n in dbRaoVat.TINRAOVATDALUUs
                                 where n.MaTinRaoVatDaLuu == maTin && n.Deleted == 0
                                 select n).Single();

            _delete.Deleted = 1;
            dbRaoVat.SubmitChanges();
        }

        public static void Update(TinRaoVatDaLuuDTO dto)
        {
            RaoVatDataContext dbRaoVat = new RaoVatDataContext();

            TINRAOVATDALUU _update = (from n in dbRaoVat.TINRAOVATDALUUs
                                      where n.MaTinRaoVatDaLuu == dto.MaTinRaoVatDaLuu && n.Deleted == 0
                                      select n).Single();

            _update.MaNguoiDung = dto.MaNguoiDung;
            _update.MaTinRaoVat = dto.MaTinRaoVat;
            _update.ThoiGianLuu = dto.ThoiGianLuu;

            dbRaoVat.SubmitChanges();
        }
    }
}
